<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
// 英文：
  // operator - 操作员

// 前置知识：
// 1. 在JS中，函数是「一等公民」
  // 一等公民即在任何语言中，可以赋值给 `变量`的值，都叫「一等公民」
    // 最普遍的是 - 数据，如 数字、字母、布尔值...
  // 而在 JS 中，函数是 能赋值给变量的。

  var add = function(x, y) {
    return x + y;
  }

  var ff = add;
  // 即 add 是变量，又是函数；此即为「函数是一等公民」。

// 函数是一等公民的好处/作用/优势？
  // 因为函数可以是变量，即函数可以作为 `其他函数的实参`。


// 案例：
/*
  * operator 是函数
  * x 和 y 是数字
  * 所以，x 和 y 的结果值取决于 operator 是什么函数
*/
function f(operator, x, y) {
  // operator = add
  return operator(x, y); // 其等同于 add(9, 7);
}

function sub(x, y) {
  return x - y;
}

console.log(
  f(add, 9, 7)
);

console.log(
  f(sub, 9, 7)
);
</script>